# 导包
import logging.handlers
class GetLogger:
    logger = None
    @classmethod
    def get_logger(cls):

        if cls.logger is None:
            # 获取日志器
            cls.logger = logging.getLogger()
            # 设置日志器级别
            cls.logger.setLevel(logging.INFO)
            # 获取处理器 控制台
            sh = logging.StreamHandler()
            # 获取处理器 文件-以时间间隔
            th = logging.handlers.TimedRotatingFileHandler(filename="../log/logtime03.log",
                                                           when="midnight",
                                                           interval=1,
                                                           backupCount=30,
                                                           encoding="UTF-8"
                                                           )
            # when 字符串，指定日志切分间隔时间的单位。midnight:凌晨:12点。
            # interval 是间隔时间单位的个数，指等待多少个 when 后继续进行日志记录
            # backupCount 是保留日志文件的个数

            # 设置格式器
            fmt = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d] - %(message)s"
            fm = logging.Formatter(fmt)
            # 把格式器添加到处理器-控制台
            sh.setFormatter(fm)
            # 把格式器添加到处理器-文件-以时间间隔
            th.setFormatter(fm)
            # 设置处理器-文件-以时间间隔的级别
            # th.setLevel(logging.ERROR)
            # 把处理器-控制台 添加到日志器
            cls.logger.addHandler(sh)
            # 把处理器-文件 添加到日志器
            cls.logger.addHandler(th)
        return cls.logger


if __name__ == '__main__':
    logger = GetLogger().get_logger()
    logger.info("info被执行")
    logger.info("error执行")
